package com.local.goods.mapper;

import com.local.goods.pojo.Goods;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface GoodsMapper {

    /**
     * 搜索商品列表，支持翻页：用于列表页的展示和搜索
     * @param start
     * @param limit
     * @param sort
     * @param order
     * @param goodsName
     * @param goodsSellStatus
     * @return
     */
    public List<Goods> findGoodsList(Integer start, Integer limit, String sort, String order, String goodsName, Integer goodsSellStatus);


    /**
     * 查询商品总数，包括搜索
     * @param goodsName
     * @param goodsSellStatus
     * @return
     */
    public Integer getTotalGoods(String goodsName, Integer goodsSellStatus);

    /**
     * 新增商品
     * @param goods
     * @return
     */
    public Integer save(Goods goods);


    /**
     * 通过id查询
     * @param goodsId
     * @return
     */
    public Goods getById(Integer goodsId);


    /**
     * 修改
     * @param goods
     * @return
     */
    public Integer update(Goods goods);

    /**
     * 更新状态，上架和下架
     * @param ids
     * @param goodsSellStatus
     * @param updateUser
     * @param updateTime
     * @return
     */
    public Integer updateStatus(Integer[] ids, Integer goodsSellStatus, Integer updateUser, String updateTime);


    public Goods getByIdForIndexPage(Integer goodsId);


    /**
     * 通过category id查询商品列表
     * @param categoryId
     * @param start
     * @param limit
     * @param sort
     * @param order
     * @param goodsSellStatus
     * @return
     */
    public List<Goods> findGoodsListByCategoryId(Integer categoryId, Integer start, Integer limit, String sort, String order, Integer goodsSellStatus);

    /**
     * 通过category id查询商品列表的数量
     * @param categoryId
     * @param goodsSellStatus
     * @return
     */
    public Integer getTotalByCategoryId(Integer categoryId, Integer goodsSellStatus);

    /**
     * 查询商品状态
     * @param goodsId
     * @return
     */
    public Goods getGoodsStatus(Integer goodsId);


    /**
     * 通过ids批量查询商品列表
     * @param goodsIds
     * @return
     */
    public List<Goods> getGoodsListByIds(List<Integer> goodsIds);


    /**
     * 通过id查询数据（不包括 goods_detail_content 这个字段）
     * @param goodsId
     * @return
     */
    public Goods getByGoodsId(Integer goodsId);

    /**
     * 批量更新商品的库存（当购物车生成订单的时候）
     * @param goodsStockNumList
     * @return
     */
    public Integer updateGoodsStockNum(List<Goods> goodsStockNumList);
}
